package AmbientNetwork;
import java.util.*;

/**
 * A Node objektumokat megvalósító osztály. Ebből származtatjuk le az AmbientNetworks és Peer osztályokat.
 * Tartalmazza a hálózatban szereplő egységek szimulációhoz szükséges tulajdonságait.
 * @author D-Torus-Team
 */

public class Node {
	private long id; // A node saját id-ja
	private Policy policy; // A node policy-je
	private List<Node> neighbours; // A node szomszédai
	private boolean busy; // Épp foglalt-e
	private int depth; // Hányadik hierarchia szinten található
        private boolean isPeer; // Peer-e vagy AmbientNetworks
        private boolean isSuperPeer; // Ha superPeer, akkor igaz

        Node(){};
        Node(long i, Policy p, List<Node> n){
            this.id=i;
            this.policy=p;
            this.neighbours=n;
            this.busy=false;
            this.depth=0;
            this.isPeer=false;
            this.isSuperPeer=false;

        }

	public long getID() {
		return id;
	}

	public boolean getBusy() {
		return this.busy;
	}

	public void setBusy(boolean b) {
		this.busy=b;
	}

	public int getDepth() {
		return depth;
	}

	public void setDepth(int a) {
		this.depth=a;
	}
        public Policy getPolicy(){
            return this.policy;
        }
        public boolean getIsPeer(){
            return this.isPeer;
        }
        public void setIsPeer(boolean a){
            this.isPeer=a;
        }
        public List<Node> getNeighbours(){
            return this.neighbours;
        }
        public void addAnID(long id){}
        public List<Long> getAnID(){ List<Long> empty=new ArrayList<Long>(); return empty;}
        public List<Node> getMembers(){ return this.neighbours;}
        public void setIsSuperPeer(boolean a){
            this.isSuperPeer=a;
        }
       public boolean getIsSuperPeer(){
           return this.isSuperPeer;
       }

}